<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Test</title>
<script language="JavaScript" src="../jsunit/app/jsUnitCore.js"></script>
<script language="JavaScript" src="../simple-template.js"></script>
<script type="text/javascript">
var t;
function $(id){
	return document.getElementById(id);
}
function setUp(){
	t = new SimpleTemplate({input:"html"});
}
function tearDown(){
}

function checkValue(addonName, n, u, tr, f, z, o, e, s, test, test2, a, a2, b, er){
	assertEquals(n, t.parse('$# null@'+ addonName +':"value"@forceString #'));
	assertEquals(u, t.parse('$# undefined@'+ addonName +':"value"@forceString #'));
	assertEquals(tr, t.parse('$# true@'+ addonName +':"value" #'));
	assertEquals(f, t.parse('$# false@'+ addonName +':"value" #'));
	assertEquals(z, t.parse('$# 0@'+ addonName +':"value" #'));
	assertEquals(o, t.parse('$# 1@'+ addonName +':"value" #'));
	assertEquals(e, t.parse('$# ""@'+ addonName +':"value" #'));
	assertEquals(s, t.parse('$# "  \t"@'+ addonName +':"value" #'));
	assertEquals(test, t.parse('$# "test"@'+ addonName +':"value" #'));
	assertEquals(test2, t.parse('$# "   test \t "@'+ addonName +':"value" #'));
	assertEquals(a, t.parse('$# var a = [];a@'+ addonName +':"value" #'));
	assertEquals(a2, t.parse('$# var a = [" \t test  "];a@'+ addonName +':"value" #'));
	assertEquals(b, t.parse('$# @'+ addonName +':"value"@forceString #'));
	if(er != null){
		assertEquals(er, t.parse('$# abc *@'+ addonName +':"value" #'));
	}else{
		var val = t.parse('$# abc *@'+ addonName +':"value" #');
		assertNotEquals("", val);
		info(val);
	}
}
function testDefaultU(){
	checkValue("defaultIfUndefined", "null", "value", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "value");
	checkValue("defaultIfU", "null", "value", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "value");
}
function testDefaultN(){
	checkValue("defaultIfNull", "value", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined");
	checkValue("defaultIfN", "value", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined");
}
function testDefaultNU(){
	checkValue("defaultIfNullUndefined", "value", "value", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "value");
	checkValue("defaultIfNU", "value", "value", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "value");
}
function testDefault(){
	checkValue("default", "value", "value", "true", "false", "0", "1", "value", "  \t", "test", "   test \t ", "value", " \t test  ", "value");
	checkValue("defaultIfEmpty", "value", "value", "true", "false", "0", "1", "value", "  \t", "test", "   test \t ", "value", " \t test  ", "value");
	checkValue("defaultIfE", "value", "value", "true", "false", "0", "1", "value", "  \t", "test", "   test \t ", "value", " \t test  ", "value");
}
function testDefaultB(){
	checkValue("defaultIfBlank", "value", "value", "true", "false", "0", "1", "value", "value", "test", "   test \t ", "value", " \t test  ", "value");
	checkValue("defaultIfB", "value", "value", "true", "false", "0", "1", "value", "value", "test", "   test \t ", "value", " \t test  ", "value");
}
function testEmpty(){
	checkValue("empty", "", "", "", "", "", "", "", "", "", "", "", "", "");
}
function testEmptyU(){
	checkValue("emptyIfUndefined", "null", "", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "");
	checkValue("emptyIfU", "null", "", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "");
}
function testEmptyN(){
	checkValue("emptyIfNull", "", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined");
	checkValue("emptyIfN", "", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined");
}
function testEmptyNU(){
	checkValue("emptyIfNullUndefined", "", "", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "");
	checkValue("emptyIfNU", "", "", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "");
}
function testEscape(){
	checkValue("escape", "null", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined");
	assertEquals("&lt;&gt;&quot;&amp;&amp;quot;", t.parse('$# "<>\\"&&amp;quot;"@escape #'));
	assertEquals("&lt;&gt;&quot;&amp;&amp;quot;", t.parse('$# value@escape #',{value:"<>\"&&quot;"}));
}
function testUnescape(){
	checkValue("unescape", "null", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined");
	assertEquals("<>\"&\"<>&", t.parse('$# "<>\\"&&amp;quot;&amp;lt;&amp;gt;&amp;amp;"@unescape #'));
	assertEquals("<>\"&\"<>&", t.parse('$# value@unescape #',{value:"<>\"&&quot;&lt;&gt;&amp;"}));
}
function testTrim(){
	checkValue("trim", "null", "undefined", "true", "false", "0", "1", "", "", "test", "test", "", "test", "undefined");
}
function testIfError(){
	checkValue("ifError", "null", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined", "value");
	assertEquals("someval", t.parse('$# xxx+@ifError:val #',{val:"someval"}));
}
function testIgnoreError(){
	checkValue("ignoreError", "null", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined", "");
	assertEquals("", t.parse('$# xxx+@ignoreError #'));
}
function testForceString(){
	checkValue("forceString", "null", "undefined", "true", "false", "0", "1", "", "  \t", "test", "   test \t ", "", " \t test  ", "undefined");
}
function testEval(){
	assertEquals(3, eval("var a = 3;a"));
	assertEquals(undefined, eval("var a = 3;"));
	assertEquals(3, eval("a = 3;"));
}
function testDefaultContext(){
	assertEquals("HOST", t.parse('$# server.hostname@default:server.address +":8080" #', {server:{hostname:"HOST", address:"192.168.0.1"}}));
	assertEquals("192.168.0.1:8080", t.parse('$# server.hostname@default:server.address +":8080" #', {server:{address:"192.168.0.1"}}));
}
function testNullContext(){
	var val = t.parse('$# left #');
	info(val);
	assertNotEquals("$#", val);
}
function testNullContext2(){
	var val = t.parse('$# null@default:left #');
	info(val);
	assertNotEquals("$#", val);
}
</script>
</head>
<body></body>
</html>